目录

  1. 互动直播方法介绍 MRTCInteractiveClient

  2. 接口介绍 MRTCInteractiveClientRoomEvents

  3. 设置 MRTCSetting

  4. 编解码器 MRTCCodec

  5. 错误信息 MRTCException

互动直播方法介绍 MRTCInteractiveClient

/*
/*
作用:初始化互动直播类
host:主机地址
appContext:application context
renderer:本地推流渲染的SurfaceViewRenderer实例
setting:本地推流配置
*/
public MRTCInteractiveClient(String host, Context appContext, SurfaceViewRenderer renderer, MRTCSetting setting)

/*
作用:加入互动直播房间
channel:频道id
role:加入房间作为的角色,主持人为main,嘉宾为1、2、3...等数字编号
password:房间密码,主持人和嘉宾的密码不同
delegate:MRTCInteractiveClientRoomDelegate,会有加入房间后嘉宾加入,嘉宾离开,错误等回调
*/
public void join(String channel, String role, String password, MRTCInteractiveClientRoomEvents roomEvents)

/*
作用:离开房间,销毁资源
*/
public void leave()

/*
作用:播放指定角色的流
appContext:application context
role:角色名,例如:main、1、2、3等
renderer:用于渲染该角色流的SurfaceViewRenderer实例
*/
public void playClient(Context appContext, String role, SurfaceViewRenderer renderer)

/*
作用:停止播放指定角色的流
role:角色名,例如:main、1、2、3等
*/
public void stopClient(String role)

/*
作用:开关本地视频推流,关闭后房间其他人将看不到您的画面
enable: YES:开 NO:关
*/
public void enableLocalAudio(boolean enable)

/*
作用:开关本地音频推流,关闭后房间其他人将看不到您的声音
作用:开关本地音频推流,
enable: YES:开 NO:关
*/
public void enableLocalVideo(boolean enable)

/*
作用:开关远端音频推流,关闭后房间其他人的声音将听不到
作用:开关本地音频推流,
enable: YES:开 NO:关
*/
public void enableRemoteAudio(boolean enable)

/*
作用:切换本地摄像头
*/
public void switchCamera()

/*
作用获取本地推流实时信息
视频编码器 key:videoCodec
视频实时码率 key:videoBitrate
视频实时丢包率 key:videoPacketsLostRate

音频编码器 key:audioCodec
音频实时码率 key:audioBitrate
音频实时丢包率 key:audioPacketsLostRate
*/
public void getStats(MRTCInteractiveStatsEvents statsEvents)

接口介绍 MRTCInteractiveClientRoomEvents

public interface MRTCInteractiveClientRoomEvents{
    /*
    当互动直播实例的状态被改变时会被触发
    state:新状态
    */
    void stateChanged(MRTCInteractiveClientState state);

    /*当调用加入房间接口之后,如果加入房间成功就会回调此方法
    roleList:已经在房间中的其他角色,您可以在回调中遍历此List调用播放指定角色接口
    */
    void joinSuccess(List<String> roleList);

    /*
    当调用加入房间接口之后,如果加入房间失败就会回调此方法
    exception:错误信息
    */
    void joinFailed(MRTCException exception);

    /*
    加入房间成功后,如果有新的角色加入房间将会回调此方法
    roleList:新加入的角色数组,您可以在回调中遍历此List调用播放指定角色接口
    */
    void onJoinRoles(List<String> roleList);

    /*
    加入房间成功后,如果有角色离开房间将会回调此方法
    roleList:离开的角色数组,您可以在回调用遍历此数组移除对应的图渲染视
    */
    void onLeaveRoles(List<String> roleList);

    /*
    加入房间成功后,播放其他角色成功后将回调此方法
    role:播放的角色
    */
    void playSuccess(String role);

    /*
    加入房间成功后,播放其他角色失败时将回调此方法
    role:播放的角色
    e:错误信息
    */
    void playFailed(String role,MRTCException e);

    /*
    加入房间成功后的错误回调
    exception:错误信息
    */
    void onError(MRTCException exception);
}

设置 MRTCSetting

您可以使用MRTCSetting配置推流参数,每一个参数都有默认值,也可以从MRTCSetting中获取机器支持的配置。

  • 基本配置

      MRTCSetting setting = null;
      try{
          setting = MRTCSetting.builder().createSetting();
      }catch (MRTCException e){
    
      }
      /*默认配置  
          编解码器:机器支持的编解码器的第一个
          视频宽高:1280x720
          最大码率:2000kbps
          帧率:25
          摄像头:前置
          硬件加速:开启
          屏幕捕捉:关闭
      */
    
  • 自定义配置

    • 获取支持的编解码器

        MRTCVideoCodec[] codecs = MRTCSetting.getSupportVideoCodec();
      
    • 获取支持的分辨率(注:分辨率格式为: 宽x高)

        String[] resolutions = MRTCSetting.getSupportResolutions();
      
    • 获取支持的fps

        MRTCSetting.MRTCFpsRange fpsRange = MRTCSetting.getSupportFps();
      
    • 构造自定义配置

        MRTCSetting setting = null;
        /*捕捉摄像头配置*/
        MRTCVideoCodec codec = new MRTCVideoCodec("H264");
        try{
            setting = MRTCSetting.builder().setVideoCodec(codec)
                                            .setResolution("960x540")//分辨率
                                 .setMaxBitrate(1500)//最大码率
                                 .setFps(30)//帧率
                                 .setHardwareAccleration(false)//硬件加速
                                 .setFront(false)//后置摄像头
                                 .createSetting();//创建配置
        }catch (MRTCException e){
      
        }
        /*捕捉屏幕配置*/
        MRTCVideoCodec codec = new MRTCVideoCodec("H264");
        try{
            setting = MRTCSetting.builder().setVideoCodec(codec)
                                            .setResolution("960x540")//分辨率
                                 .setMaxBitrate(1500)//最大码率
                                 .setFps(30)//帧率
                                 .setHardwareAccleration(false)//硬件加速
                                 .setUseScreenCapture(true)//开启屏幕捕捉
                                 .setMediaProjection(mediaCode,mediaData)//设置数据源
                                 .createSetting();//创建配置
        }catch (MRTCException e){
      
        }
      

      设置为自定配置时,您需要自己定义偏好编解码器、视频分辨率、最大码率、帧率、前后摄像头。

      自定义配置建议参数:

      |分辨率|帧率|码率| |:---:|:---:|:---:| |360p|25|350| |480p|25|600| |540p|25|1000| |720p|25|1500| |360p|30|400| |480p|30|750| |540p|30|1200| |720p|30|1800| 注:码率估算公式:(0.0000782*视频宽*视频高*帧率)

编解码器 MRTCCodec

  • 构造方法

          MRTCVideoCodec codec = new MRTCVideoCodec("H264");
          MRTCVideoCodec codec = new MRTCVideoCodec("VP8");
          MRTCVideoCodec codec = new MRTCVideoCodec("VP9");
          /*暂时只支持H264,VP8,VP9三种*/
    

错误信息 MRTCException

错误码 错误含义
1600 Create new client error
1601 Client Not exist
1602 Stream already exist
1603 Stream not exist
1604 Stream server unavailable
1605 Get Mrtc server error
1606 Play failed
1607 Set play answer failed
1608 Create stream error
1609 Remote create offer error
1610 Set configuration error
1611 Json error
1612 Send message error
1613 Close PeerConnection error
1614 Set candidate error
1615 Keepalive Timeout
1616 Stream have been closed
2002 URL wrong
2003 Signaling json init error
2004 Signaling json parse error
2005 Ice connect failed
2013 Socket connect faild
2014 MRTC pusher socket disconnect
2015 MRTC puller socket disconnect
2016 MRTC interactive socket disconnect
2017 Role out of bounds
2018 Wrong video resolution format
3000 Stop capture interrputed exception
3001 Switch camera error
3002 Audio record init error
3003 Audio record start error
3004 Audio record error
3005 Audio track init error
3006 Audio track start error
3007 Auido track error
3008 No available device
3009 User revoked permission to capture the screen
3010 Camera error
3011 Camera disconnected
3012 Camera freezed
3013 Peerconnection factory is null
3014 No remote video stream
3015 URI init error
3017 Wrong push scheme
3018 Wrong push path format
3019 Create sdp failed
3020 Set sdp failed
3021 Role error

results matching ""

    No results matching ""